package com.open.capacity.workflow.service;

import com.open.capacity.workflow.enums.WFTransportTypes;
import com.open.capacity.workflow.model.WFEngine.WFNodeInfo;
import com.open.capacity.workflow.model.WFScheme;
import com.open.capacity.workflow.vo.WFParameter;

import java.io.IOException;
import java.util.List;

/**
 * @author 作者 ftquan 464725602@qq.com
 * @version 创建时间：2017年11月12日 上午22:57:51
 */
public interface WFSchemeExtService {

    /**
     * 初始化模板数据
     *
     * @param scheme 模板数据
     */
    void schemeInit(WFScheme scheme) throws IOException;

    /**
     * @return 获取开始节点
     */
    WFNodeInfo getStartNode();


    /**
     * 获取流程处理节点
     *
     * @param nodeId 流程处理节点主键
     * @return
     */
    WFNodeInfo getNode(String nodeId);


    /**
     * 寻找到下一个节点
     *
     * @param nodeId        当前Id
     * @param transportType 流转类型1.同意2.不同意3.超时
     * @return
     */
    List<WFNodeInfo> getNextNodes(String nodeId, WFTransportTypes transportType, WFParameter parameter);

    /**
     * 获取上一节点数据
     *
     * @param nodeId 节点主键
     * @return
     */
    Integer getPreNodeNum(String nodeId);

    /**
     * 判断两节点是否连接
     *
     * @param fromNodeId 开始节点
     * @param toNodeId   结束节点
     * @return
     */
    Boolean isToNode(String fromNodeId, String toNodeId);

}
